#ifndef __MAPA_H__
#define __MAPA_H__

#include <list>
#include <utility>
#include <vector>

#define FULL_RESTRIC	0x0000	//0000
#define ARRIBA			0x0001	//0001
#define ABAJO 			0x0002	//0010
#define IZQUIERDA 		0x0004	//0100
#define DERECHA 		0x0008	//1000
#define SIN_RESTRIC 	0x000F	//1111


struct lectura_casilla {
	unsigned int x;
	unsigned int y;
	unsigned int tiempo;
};

struct datos_ady {
	unsigned int tiempo;
	unsigned int restric;
};

struct casillero {
	unsigned int x;
	unsigned int y;
};


class Mapa {
private:
	//dimensiones
	unsigned int ancho;
	unsigned int alto;
	
	std::vector<std::vector<datos_ady> > ady_restringidas_v;

public:	
	Mapa( unsigned int X, unsigned int Y);

	~Mapa();

	void establecerRestriccion(lectura_casilla* casilla, unsigned int restricciones);
		
	unsigned int direcciones(unsigned int x, unsigned int y);
	
	unsigned int Ancho();
	
	unsigned int Alto();
	
	unsigned int tiempo(unsigned int x, unsigned int y);
	
	unsigned int tiempo(unsigned int lc);
	
	std::list<unsigned int> adyacentes(unsigned int lc);
	
};



#endif //__MAPA_H__

